Developers of many application programs (“applications”) implement the applications so that they can be customized by third parties. Typically, to customize an application received from a developer, a third party develops custom code (e.g., add-ins and document-level customizations) that uses functionality exposed by the application. The custom code may improve the usability of the applications or provide additional functionality (e.g., domain-specific functionality). Developers may provide “runtimes” that facilitate the development of custom code. A runtime is code that is loaded along with custom code and provides services to the custom code. These services may include higher-level functionality than that exposed by the application or may include domain-specific functionality. When an application is to load and start the execution of custom code, the application may load the runtime and direct the runtime to load and start the execution of the custom code.
The Microsoft®.NET Framework provides programming experience is generally characterized by utilization of a class library, operating on objects through properties and events, and other features. The .NET Framework provides a common language runtime (“CLR”) that provides high-level operating system type services to the managed programs (including custom code and applications) and serves as an execution engine for managed programs. The CLR ensures that managed programs do not take any unauthorized action. The CLR provides application domains (“appdomains”) in which different managed programs can execute to help ensure that an errant managed program will not unduly affect the execution of another managed program.
However, despite the many resources provided by the .NET Framework that act to develop and manage executable code, third parties that receive applications may be unfamiliar with certain functions of the environment, and may spend much time and effort in customizing applications. For example, they may be unfamiliar with the methodology or structure of the underlying code or the language in which the code is written (e.g., Microsoft's® C# programming language is often used in developing code using .NET Framework and may be unfamiliar to a third party).
Additionally, the third party may be a customer of the application provider, and may wish to quickly customize a received base application and implement the customized application for public consumption. For example, banks and other financial institutions provide cash and other services to the public via automated teller machines (ATMs). At times, the needs of the public and/or the financial institution change, and the financial institution may want to change how the ATM interacts with the public and/or with the institution.
These and other problems exist with respect to providing customized applications to customers.